QueryUnicodeMappings
Returns a list of the conversion mappings available on the system that meet specified matching criteria and returns the number of mappings found.
pascal OSStatus QueryUnicodeMappings ( OptionBits iFilter, ConstUnicodeMappingPtr iFindMapping, ItemCount iMaxCount, ItemCount *oActualCount, UnicodeMappingPtr oReturnedMappings);
iFilter
- Filter control flags representing the six values given in the Unicode mapping structure that this function uses to match against in determining which mappings on the system to return to your application. The filter control flag enumerations, described in "Filter Control Flags" (page 116), define the constants for the flags and their masks. You can include in the search criteria any of the three text encoding values--base, variant, and format--for both the Unicode encoding and the other specified encoding. For any flag not turned on, the value is ignored; the function does not check the corresponding value of the mapping tables on the system.
iFindMapping
- A structure of type
UnicodeMapping
(page 118) containing the text encodings whose values are to be matched.iMaxCount
- The maximum number of mappings that can be returned. You provide this value to identify the number of elements in the array pointed to by the
oReturnedMappings
parameter that your application allocated. If the function identifies more matching mappings than the array can hold, it returns as many of them as fit. The function also returns akTECArrayFullErr
in this case.oActualCount
- A pointer to a value of type
ItemCount
. On output, the number of matching mappings found. This number may be greater than the number of mappings specified byiMaxCount
if more matching mappings are found than can fit in theoReturnedMappings
array.oReturnedMappings
- A pointer to an array of structures of type
UnicodeMapping
(page 118). On input, this pointer refers to an array for the matching mappings returned by the function. To allocate sufficient elements for the array, you can use the functionCountUnicodeMappings
(page 170) to determine the number of mappings returned for given values of theiFilter
andiFindMapping
parameters. On output, this array holds the matching mappings. If there are more matches than the array can hold, the function returns as many of them as will fit and akTECBufferBelowMinimumSizeErr
error result. TheoActualCount
parameter identifies the number of matching mappings actually found, which may be greater than the number returned.- function result
- A result code. See "Text Encoding Conversion Manager Result Codes" (page 42) in the chapter "Basic Text Types Reference."
DISCUSSION
You can use theQueryUnicodeMappings
function to obtain all mappings on the system up to the number allowed by youroReturnedMappings
array by specifying a value of zero for theiFilter
field.You can use the function to obtain very specific mappings by setting individual filter control flags. You can filter on any of the three text encoding subfields of the Unicode mapping structure's
unicodeEncoding
specification and on any of the three text encoding subfields of the mapping'sotherEncoding
specification. TheiFilter
parameter consists of a set of six control flags that you set to identify which of the corresponding six subfields to include in the match. The list provided in theoReturnedMappings
parameter will contain only mappings that match the fields of the Unicode mapping structure whose text encodings subfields you identify in the filter control flags. No filtering is performed on subfields for which you do not set the corresponding filter control flag.For example, to obtain a list of all mappings in which one of the encodings is the default variant and default format of the Unicode 1.1 base encoding and the other encoding is the default variant and default format of a base encoding other than Unicode, you would set up the
iFilter
andiFindMappings
parameter as follows. To set up these parameters, you use the constants defined for the text encoding bases, the text encoding default variants, the text encoding default formats, and the filter control flag bitmasks. For information on text encoding bases, text encoding default variants, and text encoding default formats and their constants, see the chapter "Basic Text Types Reference." In this example, the text encoding base field of the Unicode mapping structure'sotherEncoding
field is ignored, so you can specify any value for it. When you callQueryUnicodeMappings
, passing it these parameters, the function will return a list of mappings between the Unicode encoding you specified and every other available encoding in which each non-Unicode base encoding shows up once because you specified its default variant and default format.
iFindMapping.unicodeMapping = CreateTextEncoding( kTextEncodingUnicodeV1_1, kTextEncodingDefaultVariant, kTextEncodingDefaultFormat); iFindMapping.otherEncoding = CreateTextEncoding( kTextEncodingMacRoman, kTextEncodingDefaultVariant, kTextEncodingDefaultFormat); iFilter = kUnicodeMatchUnicodeBaseMask | kUnicodeMatchUnicodeVariantMask | kUnicodeMatchUnicodeFormatMask | kUnicodeMatchOtherVariantMask | kUnicodeMatchOtherFormatMask;If the function returns anoErr
result code, the value retuned in theoActualCount
parameter is less than or equal to the value returned in theiMaxCount
parameter and theoReturnedMappings
parameter contains all of the matching mappings found. If the function returns akTECArrayFullErr
, the function found more mappings than youroReturnedMappings
array could accommodate.